package Integer;

/**
 * 包装类
 * java定义类8个包装类，目的是为了解决基本类型不能直接参与面向对象开发的问题，使得基本类型
 * 可以通过包装类的实例化对象的形式存在
 * 其中数字类型的包装类都继承自java.lang.Number,而char和boolean的包装类直接继承自Object
 * Number 是一个抽象类，定义了一些方法，目的是让包装类可以将其表示的基本类型转换为其他数字类型。
 */
public class IntegerDemo {
    public static void main(String[] args) {
        //基本类型转换为包装类
        int i  =123;
//        //java 推荐我们使用包装类的静态方法valueOf将基本类型转换为包装类，而不是直接new
//        Integer i1= new Integer(i);
//        Integer i2 =new Integer(i);
        Integer i1=Integer.valueOf(i);
        Integer i2=Integer.valueOf(i);
        System.out.println(i1==i2);           //  true
        System.out.println(i1.equals(i2));   // true
        double dou=123.123;
        Double dou1 =Double.valueOf(dou);
        //包装类转换为基本类型
        int in=i1.intValue();
        double doub=i1.doubleValue();
        System.out.println(in); //123
        System.out.println(doub);//123.0
        in=  dou1.intValue();//大类型转小类型可能存在丢精度！
        doub=dou1.doubleValue();
        System.out.println(in);//123
        System.out.println(doub);//123.123
    }
}
